<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 问:为什么我们需要闭包?
        // 说:因为全局变量容易污染环境，而局部变量又无法长期驻留内存
        //    于是我们需要一种机制，即能长期保存变量又不污染全局，这就是闭包。

        function foo(){
            var a = 10;
            return function(){   //1、有函数嵌套     3、返回值是函数
                a--;                // 2、内部函数引用外部作用域的变量参数
                console.log(a);
            }
        }
        let fun = foo();    // 4、创建一个对象函数，让其长期驻留
        fun();

        //那什么是闭包,严格来说要满足四个条件
        // 1、有函数嵌套
        // 2、内部函数引用外部作用域的变量参数
        // 3、返回值是函数
        // 4、创建一个对象函数，让其长期驻留

        
    </script>
</body>
</html>